/*
 * @Author: SeonHu
 * @Date: 2025-09-16 14:44:19
 * @LastEditors: SeonHu
 * @LastEditTime: 2025-09-23 15:18:01
 * @FilePath: \bg-vben\src\api\mobile\admin\appversion.ts
 * @Description:
 * Copyright © 2020-2025 SANQING Corporation, All rights reserved.
 */
import type { AppPackageInputDto, AppPackageOutputDto } from '@/api/mobile/model/apppackage';
import type {
  AppVersionInputDto,
  AppVersionInputDtoSimple,
  AppVersionOutputDto,
  AppVersionOutputDtoSimple,
} from '@/api/mobile/model/appversion';

import type { ErrorMessageMode, PageData } from '#/request';

import { request } from '@/utils/request/axios';

import { PageRequest } from '#/request';

/** 移动端版本管理URL枚举 */
enum Api {
  /** 读取移动端版本 */
  Read = '/api/mobile/admin/appVersion/read',
  /** 读取移动端版本简单信息 */
  ReadSimple = '/api/mobile/admin/appVersion/readSimple',

  /** 获取移动端版本 */
  Get = '/api/mobile/admin/appVersion/get',

  /** 新增移动端版本 */
  Create = '/api/mobile/admin/appVersion/create',
  /** 更新移动端版本 */
  Update = '/api/mobile/admin/appVersion/update',
  /** 删除移动端版本 */
  Delete = '/api/mobile/admin/appVersion/delete',

  /** 更新移动端应用版本简单信息 */
  UpdateSimple = '/api/mobile/admin/appVersion/updateSimple',

  /** 获取应用程序包 */
  GetPackage = '/api/mobile/admin/appVersion/getPackage',
  /** 设置应用程序包 */
  SetPackage = '/api/mobile/admin/appVersion/setPackage',
}

// #region 读取移动端版本
/**
 * 读取移动端版本
 * @param params 分页请求
 * @param mode 错误消息模型
 */
export function readAppVersion(params: PageRequest, mode: ErrorMessageMode = 'message') {
  return request.post<PageData<AppVersionOutputDto>>(
    {
      url: Api.Read,
      params,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion
// #region 读取移动端版本简单信息
/**
 * 读取移动端版本简单信息
 * @param params 分页请求
 * @param mode 错误消息模型
 */
export function readAppVersionSimple(params: PageRequest, mode: ErrorMessageMode = 'message') {
  return request.post<PageData<AppVersionOutputDtoSimple>>(
    {
      url: Api.ReadSimple,
      params,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion

// #region 获取移动端版本
/**
 * 获取移动端版本
 * @param id 移动端版本编号
 * @param mode 错误消息模型
 */
export function getAppVersion(id: bigint | string, mode: ErrorMessageMode = 'message') {
  return request.get<AppVersionOutputDto>(
    {
      url: Api.Get,
      params: { id },
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion

// #region 新增移动端版本
/**
 * 新增移动端版本
 * @param dtos 输入DTO
 * @param mode 错误消息模型
 */
export function createAppVersion(dtos: AppVersionInputDto[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.Create,
      params: dtos,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion
// #region 更新移动端版本
/**
 * 更新移动端版本
 * @param dtos 输入DTO
 * @param mode 错误消息模型
 */
export function updateAppVersion(dtos: AppVersionInputDto[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.Update,
      params: dtos,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion
// #region 删除移动端版本
/**
 * 删除移动端版本
 * @param ids 移动端版本编号
 * @param mode 错误消息模型
 */
export function deleteAppVersion(ids: (bigint | string)[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.Delete,
      params: ids,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion

// #region 更新移动端应用版本简单信息
/**
 * 更新移动端应用版本简单信息
 * @param dtos 输入DTO
 * @param mode 错误消息模型
 */
export function updateAppVersionSimple(dtos: AppVersionInputDtoSimple[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.UpdateSimple,
      params: dtos,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion

// #region 获取应用程序包
/**
 * 获取应用程序包
 * @param versionId 应用版本编号
 * @param mode 错误消息模型
 */
export function getAppPackage(versionId: bigint | string, mode: ErrorMessageMode = 'message') {
  return request.get<AppPackageOutputDto>(
    {
      url: Api.GetPackage,
      params: { versionId },
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion
// #region 设置应用程序包
/**
 * 设置应用程序包
 * @param dtos 输入DTO
 * @param mode 错误消息模型
 */
export function setAppPackage(dtos: AppPackageInputDto[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.SetPackage,
      params: dtos,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion
